<?php

namespace SummoIngenio\Sai\MatematicaBundle\Utility\Juego\P0;

use Doctrine\ORM\EntityManager;
use SummoIngenio\Sai\MatematicaBundle\Utility\Juego\JuegoBase;

/**
 * 
 * @author SVM
 */
class P01061 extends JuegoBase {
  private $resultado;
  private $base1;
  private $base2;
  private $base3;
  
  function init() {
	$result = rand(5,20);
        $tp = rand(0,1);
        if($tp==1){
            $this->sig='+';
            $this->suma();
        }else{
            $this->sig='-';                  
            $this->resta();      
        }

  }
  public function suma(){
	$result = rand(7,20);      
	$respuestas = array();      
	for ($i = 2; $i < $result-1; $i++) {
                array_push($respuestas,$result-$i);
	}      
	shuffle($respuestas);
	$this->resultado=$result;
	$this->base1 = $respuestas[0];
	$this->base2 = rand(1,$this->resultado-$this->base1-1);
	$this->base3 = $respuestas[1];
        $this->base4 = rand(1,$this->resultado-$this->base3-1);
	$this->base5 = $respuestas[2];
        $this->base6 = rand(1,$this->resultado-$this->base5-1);        
	$this->opciones = array(0,1,2,3,4,5,6,7,8,9,10);      
  }
  public function resta(){
	$result = rand(1,14);      
	$respuestas = array();      
	for ($i = $result+2; $i < 20; $i++) {
            array_push($respuestas,$i);
	}      
	shuffle($respuestas);
	$this->resultado=$result;
	$this->base1 = $respuestas[0];
	$this->base2 = rand(1,$this->base1-$this->resultado-1);
	$this->base3 = $respuestas[1];
        $this->base4 = rand(1,$this->base3-$this->resultado-1);
        $this->base5 = $respuestas[2];
        $this->base6 = rand(1,$this->base5-$this->resultado-1);        
        
	$this->opciones = array(0,1,2,3,4,5,6,7,8,9,10);      
  }  
  public function getHtmlJugable() {
    return $this->render('P0/P01061/jugable', array(
      'resultado'=>$this->resultado,
	  'base1'=>$this->base1,
	  'base2'=>$this->base2,
	  'base3'=>$this->base3,
	  'base4'=>$this->base4,
	  'base5'=>$this->base5,
	  'base6'=>$this->base6,        
	  'sig'=>$this->sig,	  
    ));
  }
  
  public function getHtmlResuelto() {
    return $this->render('P0/P01061/resuelto', array(
      'resultado'=>$this->resultado,
	  'base1'=>$this->base1,
	  'base2'=>$this->base2,
	  'base3'=>$this->base3,
	  'base4'=>$this->base4,
	  'base5'=>$this->base5,
	  'base6'=>$this->base6,           
	  'sig'=>$this->sig,	  	  
    ));
  }
  
  public function getHtmlDesactivado() {
    return $this->render('P0/P01061/desactivado', array(
      'resultado'=>$this->resultado,
	  'base1'=>$this->base1,
	  'base2'=>$this->base2,
	  'base3'=>$this->base3,
	  'base4'=>$this->base4,
	  'base5'=>$this->base5,
	  'base6'=>$this->base6,           
	  'sig'=>$this->sig,	  	  
    ));
  }

  public function getPregunta() {
      return '';
  }

  public function getCss() {
    $aRetornar = array(
      "tipo"      => "archivo",
      "contenido" => "P0/P01061.css"
    );
    return $aRetornar;
  }
  
  public function getJavascript() {
    $aRetornar = array(
      "tipo"      => "archivo",
      "contenido" => "P0/P01061.js"
    );
    return $aRetornar;
  }
  
  public function verificarRespuesta($respuestaUsuario) {
       $cadena = '';
      if($this->sig=='+'){
        $cadena = sprintf("%s + %s + %s = %s",$this->base1,$this->base2,$respuestaUsuario->get('valor1'),$this->resultado);          
      }else{
        $cadena = sprintf("%s - %s - %s = %s",$this->base1,$this->base2,$respuestaUsuario->get('valor1'),$this->resultado);                    
      }
	$rst = true;
	if(!$this->verificar($respuestaUsuario->get('valor1'))){
		$rst = false;
	}
	if(!$this->verificar2($respuestaUsuario->get('valor2'))){
		$rst = false;
	}
	if(!$this->verificar3($respuestaUsuario->get('valor3'))){
		$rst = false;
	}      
    $aRetornar = array(
      'respuesta' => $cadena,
      'correcta'  =>  $rst,
    );
    
    return $aRetornar;
  }
  public function verificar($res){
      
      if($this->sig=='-'){
          
          if(($this->base1-$this->base2-$res == $this->resultado)){
              return true;
          }else{
              return false;
          }
      }else{
          
          if($this->base1+$this->base2+$res == $this->resultado){
              
              return true;
          }else{
              
              return false;
          }          
      }
  }
  public function verificar2($res){
      
      if($this->sig=='-'){
          
          if(($this->base3-$this->base4-$res == $this->resultado)){
              return true;
          }else{
              return false;
          }
      }else{
          
          if($this->base3+$this->base4+$res == $this->resultado){
              
              return true;
          }else{
              
              return false;
          }          
      }
  }
  public function verificar3($res){
      
      if($this->sig=='-'){
          
          if(($this->base5-$this->base6-$res == $this->resultado)){
              return true;
          }else{
              return false;
          }
      }else{
          
          if($this->base5+$this->base6+$res == $this->resultado){
              
              return true;
          }else{
              
              return false;
          }          
      }
  }  
  public function __sleep() {
    return array(
      'resultado',
      'base1',
	  'base2',
	  'base3',
          'base4',
          'base5',
          'base6',
	  'sig',
    );
  }
}
